home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 11 / FM Towns Free Software Collection 11.iso / t_os / data / dora / doraonln.plp < prev    next >
Text File  |  1995-08-15  |  25KB  |  866 lines

  1.  
  2. /*    共通処理の定義        */
  3. /*    通信時間記録処理    */
  4. %RECTIME{%dt    @getdt;
  5.     %time    @linetime;
  6.     %hh    time/3600;
  7.     %hh    @case(@nochar(hh),1,{im({0}|hh)},,{im(hh)});
  8.     %mm    (time-time/3600*3600)/60;
  9.     %mm    @case(@nochar(mm),1,{im({0}|mm)},,{im(mm)});
  10.     %ss    time-time/60*60;
  11.     %ss    @case(@nochar(ss),1,{im({0}|ss)},,{im(ss)});
  12.     TELNO := @head(sROAD,{/});
  13.     mkdir2(LOG2|{アクセスdat});
  14.     write(LOG2|{アクセスdat\CONNECT.DAT},
  15.         {tel no=}|TELNO|
  16.         {;  logout=}|@getchar(dt,1,10)|{ }|@getchar(dt,17,8)|
  17.         {;  time=}|hh|{h}|mm|{m}|ss|{s}|
  18.         {; id=}|ID|{;\n});
  19.     };
  20. /*MAIN メニューに復帰要否の判断処理*/
  21. %preRetM{
  22.     loop({
  23.         wait    (3,{retMAIN;im({No})}
  24.             ,{MAIL},{type({0\n});im({Yes})}
  25.             ,{FILE},{type({0\n});im({Yes})}
  26.             ,{SELECT},{type({Q\n});im({Yes})}
  27.             ,{もう帰っちゃうの},{type({N\n});im({Yes})}
  28.             ,{ログアウトしますか},{type({N\n});im({Yes})}
  29.             ,{☆},{im({No})}
  30.             ,{Q:Quit},{type({Q\n});im({Yes})}
  31.             ,{,Q},{type({Q\n});im({Yes})}
  32.             ,{,O},{im({No})}
  33.             ,{MAIN},{im({No})}
  34.             ,{メイン},{im({No})}
  35.             ,{メイン},{im({No})}
  36.             ,{ch},{im({No})}
  37.             )
  38.         })
  39.     };
  40. /*MAIN メニューに復帰する処理    */
  41. %retMAIN{wait(2);
  42.     loop    ({
  43.         wait    (3,{type({\n});im({Yes})}
  44.             ,{T,S,C,X,Y,G,Z,M,B,E,K,H,?,0,Q},
  45.                 {WaitMK;type({0|Q\n});im({Yes})}
  46.             ,{,Q},{WaitMK;type({Q\n});im({Yes})}
  47.             ,{Q:Quit},{WaitMK;type({Q\n});im({Yes})}
  48.             ,{A,D,M,U,W,},{WaitMK;type({0\n});im({Yes})}
  49.             ,{quit},{WaitMK;type({0\n});im({Yes})}
  50.             ,{FILE},{WaitMK;type({0|Q\n});im({Yes})}
  51.             ,{?,0},{WaitMK;type({0|Q\n});im({Yes})}
  52.             ,{\n= MAIN =},{WaitMKB;im({No})}
  53.             ,{[36m= MAIN =},{WaitMKB;im({No})}
  54.             ,{\nメイン},{WaitMKB;im({No})}
  55.             ,{:メイン},{WaitMKB;im({No})}
  56.             ,{36mメイン},{WaitMKB;im({No})}
  57.             ,{メイン},{WaitMKB;im({No})}
  58.             ,{,O},{WaitMKB;im({No})}
  59.             ,{[36mMAIN},{WaitMKB;im({No})}
  60.             ,{\nMAIN },{WaitMKB;im({No})}
  61.             ,{# },{WaitMK;type({//|0|Q\n});im({Yes})}
  62.             ,{,\,?,},{WaitMKB;im({No})}
  63.             );
  64.         });
  65.     };
  66. /*「<」を待つ共通処理*/
  67. %WaitMK    {
  68.     loop    ({
  69.         wait    (5,{type({\n});im({Yes})}
  70.             ,{ヘルプ 表示},{im({No})}    /*やぎネット対応*/
  71.             ,{>},{im({No})})
  72.         });
  73.     };
  74. /*ボード指定巡回で「<」を待つ共通処理*/
  75. %WaitMKB{
  76.     loop    ({
  77.         wait    (Wtime5,{type({\n});im({Yes})}
  78.             ,{FILE},{im({Yes})}
  79.             ,{BOARD},{im({Yes})}
  80.             ,{>},{im({No})})
  81.         });
  82.     };
  83. /*FNEWSの終了時にやぎネットと通常ネットとの判定処理*/
  84. %WaitFNEW{
  85.     loop    ({
  86.         wait    (Wtime5,{type({\n});im({Yes})}
  87.             ,{ヘルプ 表示},{type({0\n});im({No})}
  88.             ,{>},{type({Q\n});im({No})})
  89.         });
  90.     };
  91. /*loop先で「<」を待つ処理*/
  92. %WaitMKD{wait    (2,,{<},{})};
  93. /*    ライブラリーの最新登録状況を見る共通処理    */
  94. /* リスト取得処理 */
  95. %TypeL{    [paSS]
  96.     footnote({ファイルボードに移動しました});
  97.     WaitMK;type({L\n});
  98.     wait    (3,{type({\n})},{>},{wait(2);type({\n})});
  99.     var file[64];
  100.     file:=LOG2|{DATALIB\#}|MesNo|{DLIB.DAT};
  101.     delfile(file);
  102.     case    (paSS=NET,
  103.         {Yes},    {write(file,{ファイルボードNo#}|MesNo|
  104.             { & パスワードは設定されていません・・・・・\n});},
  105.         {No},    {write(file,{ファイルボードNo#}|MesNo|
  106.             { & パスワード}|paSS|{・・・・・です。\n});
  107.             });
  108.         DOWNCHECK;
  109.         receive(file);LIBprom2;im({No})
  110.     };
  111. %LIBprom1{[mesNo,paSS]    var MesNo[3];
  112.     case    (@nochar(mesNo),
  113.         {3},{MesNo:=mesNo},{2},{MesNo:={0}|mesNo},
  114.         {1},{MesNo:={00}|mesNo});
  115.     loop({
  116.         wait    ({3},{im({Yes})}
  117.             ,{ボードのグループではありません},
  118.                     {WaitMK;type({Q\n});im({No})}
  119.             ,{ボードには入れ},{WaitMK;type({Q\n});im({No})}
  120.             ,{ボードが見つか},{WaitMK;type({Q\n});im({No})}
  121.             ,{検索出来ません},{WaitMK;type({0|Q\n});im({No})}
  122.             ,{ダウンロード制限},{WaitMK;type({0|Q\n});im({No})}
  123.             ,{ヘルプ 表示},{TypeL(paSS)}
  124.             ,{quit},{TypeL(paSS)}
  125.             ,{,Q},{TypeL(paSS)}
  126.             ,{,?,P,0},{TypeL(paSS)}
  127.             ,{,?,0},{TypeL(paSS)}
  128.             );
  129.         });
  130.     };
  131. %LIBprom2{
  132.     %time1    @linetime;
  133.     %TimeCHK{
  134.         %time2    @linetime-time1;
  135.         case    (DEBUG,{Yes},
  136.             {display({タイムチェック実行 time=}|time2|{です\n});
  137.             });
  138.         wait(1);
  139.         case    (time2>1/6,
  140.             {No},{type({\n});im({Yes})},
  141.             {Yes},{type({\n});im({No});
  142.             display({\n次の処理に移ります。 time=}|time2|{です\n})
  143.             });
  144.         };
  145.     loop    ({
  146.         wait(5, {type({0\n});im({Yes})}
  147.             ,{\n= MAIN =},{TimeCHK}
  148.             ,{[36m= MAIN =},{TimeCHK}
  149.             ,{36mメイン},{TimeCHK}
  150.             ,{:メイン},{TimeCHK}
  151.             ,{\nメイン},{TimeCHK}
  152.             ,{36mMAIN},{TimeCHK}
  153.             ,{\nMAIN },{TimeCHK}
  154.             ,{,Q},{WaitMK;type({Q\n});im({Yes})}
  155.             ,{[36mFILE},{DOWNSTOP;WaitMK;type({0\n});im({Yes})}
  156.             ,{\nFILE},{DOWNSTOP;WaitMK;type({0\n});im({Yes})}
  157.             ,{ヘルプ 表示},{DOWNSTOP;WaitMK;type({0\n});im({Yes})}
  158.             ,{quit},{DOWNSTOP;WaitMK;type({0\n});im({Yes})}
  159.             ,{検索中止},{DOWNSTOP;WaitMK;type({0\n});im({Yes})}
  160.             ,{検索が終了},{DOWNSTOP;WaitMK;type({0\n});im({Yes})});
  161.         });preRetM;
  162.     };
  163. /*  アクセス毎にメモに書き込む処理 */
  164. %PLTMEMO{ 
  165.     footnote({メモ書き込み情報に「オートパイロットDORAでアクセス中」}|
  166.             {を登録します});
  167.     /*preRetM;*/type({\\\n});WaitMK;
  168.     type({オートパイロットDORAでアクセス中});type({\n});
  169.     };
  170. %PLTMend{preRetM;
  171.     footnote({メモ書き込み情報を初期値にします});
  172.     type({\\\n});WaitMK;
  173.     type(afMEMO);type({\n});
  174.     };
  175. /*    receiveプロトコルの判定    */
  176. %RECbin{    [datafile]
  177.     wait(1);
  178.     display({\nダウンロード先は}|datafile|{です});
  179.     case    (CHeck,
  180.         {Yes},{stoprec},{No},,,{stoprec});
  181.     case    (@tail(@version,{for },{ })={Win31},
  182.         {Yes},
  183.         {setbin(BINty);
  184.         case(BINty={Z-modem},{No},{wait(3);recbin(datafile)})},
  185.         {No},
  186.         {case    (TBINty,
  187.             {X-modem},{receivex(datafile)},
  188.             {Y-modem},{receivey(datafile)}
  189.             );
  190.         });
  191.     CHeck:={No};
  192.     };
  193. /*    sendプロトコルの判定    */
  194. %SENDbin{    [datafile]
  195.     display({\n}|datafile|{をアップロードします});
  196.     case    (@tail(@version,{for },{ })={Win31},
  197.         {Yes},{sendbin(datafile)},
  198.         {No},
  199.         {case    (TBINty,
  200.             {X-modem},{footnote({sendxで送信中});sendx(datafile)},
  201.             {Y-modem},{footnote({sendyで送信中});sendy(datafile)}
  202.             );
  203.         });
  204.     };
  205. /*異常切断処理*/
  206. %AbortOff{    [CommentB]
  207.     display(CommentB);SNDMSG({okasi_f.snd});
  208.     display({\n}|NET|{-NETとの通信を強制切断します\n});
  209.     discon;RECTIME;display({\nモデムを直接切断しました\n\n});
  210.     ClosePort;
  211.     SNDMSG({owata_f.snd});footnote({});stop
  212.     };
  213. /*切断処理 及び 切断終了表示処理*/
  214. %LogOff    {var n[2];n:=0;
  215.     endWD:={//};wait(3);
  216.     %LAST
  217.     {wait(1);
  218.     case    (@filechk(UP2|{SAIGO}),
  219.         {Yes},{DOWNSTOP;send(UP2|{SAIGO});
  220.         type({\n//\n});delfile(UP2|{SAIGO});DOWNSTART
  221.         },
  222.         {No},{wait({2},,{Gather},{},{>},{});type(endWD|{\n})}
  223.         )
  224.     };
  225.     %LAST1{im({No})};
  226.     %LAST2{type({Y\n});im({Yes})};
  227.     footnote({終了処理中});type({0|0|Q\n});
  228.     preRetM;type({O\n});DOWNSTART;
  229.     wait(Wtime2,{type({Y\n})},{かえっちゃう},{type({Y\n})},{字},{},
  230.         {:},{},{------},{},{Logoff},{},{ログアウト},{type({Y\n})});
  231.     loop    ({
  232.         wait    ({3},{im({Yes})}
  233.             ,{ログアウト},{type({Y\n});im({Yes})}
  234.             ,{RET},{endWD:={};im({Yes})}
  235.             ,{Gather},{LAST;im({No})}
  236.             ,{------->},{LAST;im({No})}
  237.             ,{30----+},{LAST;im({No})}
  238.             ,{30[34m----+},{LAST;im({No})}
  239.             ,{伝言板},{type({N\n});im({Yes})}
  240.             ,{今回},{im({No})}
  241.             ,{保管},{im({No})}
  242.             ,{接続時間},{im({No})}
  243.             ,{Disconnected},{im({No})}
  244.             ,{Logoff},{im({No})}
  245.             ,{Timepass},{im({No})}
  246.             )
  247.         });
  248.  
  249.     loop    ({
  250.         n:=n+1;
  251.         footnote({終了処理を行います。});
  252.         case    (n>5,
  253.             {Yes},
  254.             {case    (n=7,
  255.                 {Yes},{type({\n//\n});LAST1},
  256.                 {No},{footnote({強制終了処理を行います。});
  257.                     im({Yes})}
  258.                 )
  259.             },
  260.             {No},
  261.             {wait    (3,{im({Yes})}
  262.                 ,{ログアウト},{LAST2}
  263.                 ,{プッチン},{LAST1}
  264.                 ,{きれた},{LAST1}
  265.                 ,{回線切断},{im({Yes})}
  266.                 ,{NO CARRIER},{LAST1}
  267.                 ,{Disconnected},{LAST1});
  268.             })
  269.         });
  270.     discon;
  271.     RECTIME;SNDMSG({owata_f.snd});footnote({});DOWNSTOP;
  272.     ClosePort;
  273.     case(@filechk(TEMP2|{_maltxt.tmp}),
  274.         {Yes},{
  275.         mkdir2(LOG2|{MAILlist});delfile(LOG2|{MAILlist\TXTMAIL.DAT});
  276.         %a LOG2|{MAILlist\TXTMAIL.DAT};
  277.         %b @LINECUT(@read(TEMP2|{_maltxt.tmp}));
  278.         write(a,b);delfile(TEMP2|{_maltxt.tmp})
  279.         });
  280.     delfile(TEMP2|{_whotext.tmp});White;
  281.     im({No})};
  282. /*    ダウンロード開始と終了の処理    */
  283. /*    LOG DOWN START        */
  284. %DOWNSTART{
  285.     case    (CHeck,
  286.         {Yes},{stoprec},{No},);
  287.     mkdir2(@body(LOG2,,{\}));
  288.     DAY1:=@daylong;DAY2:=@im(@getchar(DAY1,6,2)|@getchar(DAY1,9,2));
  289.     case    (DEBUG,{Yes},
  290.         {display({\n☆DOWNSTART\n})});
  291.     CHeck:={Yes};
  292.     receive(LOG2|NET|DAY2|{.LOG})
  293.     };
  294. /*    LOG DOWN CHECK        */
  295. %DOWNCHECK{
  296.     case    (CHeck={Yes},
  297.         {Yes},{stoprec},{No},);
  298.     case    (DEBUG,{Yes},
  299.         {display({\n☆DOWNCHECK\n})});
  300.     CHeck:={Yes}
  301.     };
  302. /*    LOG DOWN STOP        */
  303. %DOWNSTOP{
  304.     case    (CHeck,
  305.         {Yes},{stoprec},{No},);
  306.     CHeck:={No};
  307.     case    (DEBUG,{Yes},
  308.         {display({\n☆DOWNSTOP\n})});
  309.     setcdir(CDIR)
  310.     };
  311. /*    「ago」前の年月日を「YYYY/MM/DD」の形式で返す    */
  312. %getday{[ago]
  313.     var today[25];var YEAR[5];var MONTH[5];var DAY[5];
  314.     %plus    {[DATA]
  315.         case(@nochar(DATA),
  316.             {1},{im({0}|DATA)},
  317.             {2},{im(DATA)}
  318.             )
  319.         };
  320.     %lastmonth{case(@plus(MONTH),
  321.             {01},{im({31})},{02},{im({31})},{03},{im({28})},
  322.             {04},{im({31})},{05},{im({30})},{06},{im({31})},
  323.             {07},{im({30})},{08},{im({31})},{09},{im({31})},
  324.             {10},{im({30})},{11},{im({31})},{12},{im({30})
  325.         })};
  326.     today:=@daylong;        YEAR :=@getchar(today,1,4);
  327.     MONTH:=@getchar(today,6,2);    DAY  :=@getchar(today,9,2);
  328.     case(DAY-ago<1,{Yes},{
  329.         loop({    DAY:=DAY+@lastmonth;
  330.             case(@plus(MONTH),
  331.                 {01},{MONTH:=12; YEAR:=YEAR-1},
  332.                          ,{MONTH:=MONTH-1}
  333.             );
  334.             im(DAY-ago<1);
  335.         })});
  336.     DAY:=DAY-ago;
  337.     im(YEAR|{/}|@plus(MONTH)|{/}|@plus(DAY))};
  338. /*ダウンレート計算処理ステップ2「loopとdnld共通処理」*/
  339. %BRTtime{[datafile]
  340.     %rate    Fsize/timePS;
  341.     %date    @getdt;
  342.     display({\n}|Fsize|{バイトダウンするのに}|timePS|
  343.         {秒くらいかかりました。約}|rate|{byte/sec。\n});
  344.     case    (@filechk(LOG2|{アクセスdat\downrate.dat}),
  345.         {No},
  346.         {write(LOG2|{アクセスdat\downrate.dat},
  347.             {日付     時刻  ファイル名   サイズ}|
  348.             { 時間 byte/sec   通信速度 電話番号\n})}
  349.                     );
  350.         %name @SPP(@body(@tail(datafile,{\}),,{.}),8,1)|{.}|
  351.             @tail(@tail(datafile,{\}),{.});
  352.         write(LOG2|{アクセスdat\downrate.dat},
  353.             @getchar(date,3,8)|{ }|
  354.             @getchar(date,17,5)|{ }|
  355.             name|
  356.             @SPP(Fsize,7,)|@SPP(timePS,5,)|{秒}|
  357.             @SPP(rate,4,)|
  358.             @SPP(@tail(sROAD,{/}),6,)|{bps }|
  359.             @head(sROAD,{/})|{\n});
  360.         SNDMSG({owata_f.snd});type({\n});
  361.     };
  362. /*DIGITAL-BBSTYPEのB-MAILダウン*/
  363. /*DIGtypeか否かの判定*/
  364. %DIGtype{
  365.     var Fsize[10];var datafile[64];var docfile[64];var name[30];
  366.     display(name);mkdir2(LOG2|{BMAIL});
  367.     delfile(TEMP2|{_bmaltxt.tmp});
  368.     DOWNCHECK;receive(TEMP2|{_bmaltxt.tmp});
  369.     wait    (Wtime2,,
  370.         {MAIN},,
  371.         {メイン},,
  372.         {,#,},,
  373.         {メイン},,
  374.         {☆},,
  375.         {ch},,
  376.         {Protocol},{doDIG});
  377.     DOWNSTOP;DOWNSTART;
  378.     };
  379. /*B-MAILダウン*/
  380. %doDIG    {
  381.     case    (ESCon={No},
  382.         {No},    {dispoff(!DEBUG);command(CDIR2|{escctr -d}|TEMP2|
  383.             { -K}|TEMP2|{ }|TEMP2|{_bmaltxt.tmp});dispoff({No})});
  384.     %a @read(TEMP2|{_bmaltxt.tmp});
  385.     name:=@head(@tail(a,{ファイル名 : }),{\n});
  386.     datafile:=LOG2|{BMAIL\}|name;    
  387.     docfile:=LOG2|{BMAIL\}|@body(name,,{.})|{.ggg};
  388.     %Bytes    @head(@tail(a,{ブロック数 : }),{\n});
  389.     Fsize:=    @head(@tail(a,{ブロック数 : }),{\n})*128;
  390.     type(binop|{\n});
  391.     wait    ({5},    {
  392.             %timeP @linetime;RECbin(datafile);
  393.             %timePS @linetime-timeP;type({\n});BRTtime(datafile);
  394.             wait    (WtimeD,,
  395.                 {MAIN},,
  396.                 {MAIL},,
  397.                 {成功},);
  398.             }
  399.         ,{で中断},
  400.         {
  401.         %timeP @linetime;RECbin(datafile);
  402.         %timePS    @linetime-timeP;type({\n});BRTtime(datafile);
  403.         wait    (WtimeD,,
  404.             {MAIN},,
  405.             {MAIL},,
  406.             {成功},);
  407.         }
  408.         ,{ダウンロードに失敗しちゃったみたい},{}
  409.         ,{ダウンロードに失敗しました},{}
  410.         ,{ボードの指定が違います},
  411.         {display({データ番号が違うため次の処理を行います\n})}
  412.         );im({Yes})
  413.     };
  414. /*B-MAILエラーコメント*/
  415. %SKIP    {wait(3);
  416.     SNDMSG({okasi_f.snd});
  417.     display({\n1、アップロード制御データが不足している。\n}|
  418.         {2、ネット側がバイナリメールに対応していない。\n}|
  419.         {3、バイナリメールコマンドが異なる。\n}|
  420.         {4、このバイナリメールシステムにDORAが対応していない。\n}|
  421.         {等の原因により処理をスキップします。\n});
  422.     write(UP2|{doraup.rsv},{保留;}|linebuf);
  423.     };
  424. %Berr    {
  425.     このネットのバイナリシステムにDORAが対応出来てない様です。
  426.     恐れ入りますが、DORAが停止する直前のログを
  427.     作者まで、お知らせください。
  428.          NIFTYのID=GBH00541
  429.     };
  430. /*    RTBBSへの通信メニュー    */
  431. %ONLINE    {
  432.     var dortbbs[3];var DORTbbs[3];var access[2];var yoyaku[8];var updown[2];    var am3[2];FREE1:={ 2};LGLOOK:={ 2};BDLIST:={ 2};DLLIST:={ 2};Am3:={};
  433.     loop    ({
  434.     case(genteiT,
  435.         {Yes},{
  436.         footnote({現在のアクセス予定NO.=}|sROAD|{.通信可能時間=}
  437.         |openT|{時~}
  438.         |closeT|{時})},
  439.         {No},{
  440.         footnote({現在のアクセス予定NO.=}|sROAD|
  441.         {.通信可能時間=24時間})}
  442.         );
  443.         SNDMSG({erande_f.snd});
  444.         DAY1:=@daylong;DAY2:=@im(@getchar(DAY1,6,2)|@getchar(DAY1,9,2));
  445.         case    (@filechk(LOG2|NET|DAY2|{.LOG}),
  446.             {No},{DORTBBS:={Yes}},
  447.             {Yes},{DORTBBS:={BoD}
  448.             });
  449.         dortbbs:=@case    (DORTBBS,
  450.                 {Yes},{im({1})},{BoD},{im({2})},
  451.                 {No},{im({3})},,{im({2})});
  452.         updown:=@case    (UPDOWN,
  453.                 {first},{im({1})},{last},{im({2})},
  454.                 {No},{im({3})},,{im({1})});
  455.         %maildel @case    (MAILDEL|MAILRED,
  456.             {YesYes},{case(DelML,{other},{im({2})},,{im({1})})},
  457.             {YesNo},{case(DelML,{other},{im({2})},,{im({1})})},
  458.             {NoYes},{im({3})},{NoNo},{im({4})},,{im({3})});
  459.         %bmaldel @case    (BMALDEL|BMALRED,
  460.             {YesYes},{case(DelBML,{other},{im({2})},,{im({1})})},
  461.             {YesNo},{case(DelBML,{other},{im({2})},,{im({1})})},
  462.             {NoYes},{im({3})},{NoNo},{im({4})},,{im({4})});
  463.  
  464.         %jisaR    @YesNo(JISAR,{1});    %free1    FREE1;
  465.         %pltmemo@YesNo(PLTmemo,{2});    %lglook    LGLOOK;
  466.         %mactiv @YesNo(MACTIV,{2});    %bdlist @YesNo(BDLIST,{2});
  467.         %dllist @case    (DLLIST,
  468.                 {Yes},{im({1})},{new},{im({2})},
  469.                 {No},{im({3})},,{im({3})});
  470.     case    (genteiT,
  471.         {Yes}    ,{am3:={ 1}},
  472.         {Detail},{am3:={ 2}},
  473.         {No}    ,{am3:={ 3}},
  474.             ,{am3:={ 3}}
  475.         );
  476.         %doraend @case(DORAEND,
  477.                 {stopdora},{im({1})},
  478.                 {stopmop},{im({2})},
  479.                 {continue},{im({3})},
  480.                 {poweroff},{im({4})},
  481.                 ,{im({3})});
  482.         var    udtp[1];    udtp:=0;
  483.         case(@filechk(UP2|{doraup.ctl})||@filechk(UP2|{doradown.ctl}),
  484.             {Yes},{udtp:=udtp+1});
  485.         %d @case(udtp=1,{Yes},
  486.         {im({rアップ・ダウンロード処理(予約あり)/最初    /最後   /しない})},
  487.             {No},
  488.             {im({c(予約なし)})});
  489.         %e    @case    (@tail(@version,{for },{ })={Win31},
  490.                 {Yes},
  491.                 {im({           /DORA終了/MOPT終了/DORA継続})},
  492.                 {No},
  493.                 {im({/DORA終了/MOPT終了/DORA継続/電源切断})}
  494.                 );
  495.         %f    {r(}|NET|{での巡回処理) /ファイル&ボード/ボード/しない\n}|
  496.             d|{\n}|
  497.             {rメール処理     /既読DEL/既読DEL他/確認/しない\n}|
  498.             {rバイナリメール処理   /既読DEL/既読DEL他/確認/しない\n}|
  499.             {r伝言板を見る          /する  /しない\n}|
  500.             {r「オートパイロットでアクセス」メモをアップ  /する  /しない\n}|
  501.             {r未読ポインタ      /7日前/3日前/1日前/前 回\n}|
  502.             {rLogin記録を見る            / する /しない\n}|
  503.             {r会員名簿を取得             / する /しない\n}|
  504.             {rボードを見る             / 一覧 /しない\n}|
  505.             {rファイルボードを見る       / 一覧 /News/しない\n}|
  506.             {r自由行動                   / する /しない\n}|
  507.             {r通信開始時間               /限定時刻/時刻指定/即時\n}|
  508.             {r通信終了後      }|e|{\n}|
  509.             {s設定変更処理          /BBS設定 /各種設定 }|
  510.                         {/CH.選択 \n}|
  511.             {sアップ・ダウン指定設定処理 / アップロード  / ダウンロード \n}|
  512.             {s通信を開始する        /開   始/半自動  }|
  513.                         {/終   了 \n};
  514.         %a    @case(udtp,
  515.                 0,
  516.                 {im(@plane(f,dortbbs,maildel,bmaldel,
  517.                 jisaR,pltmemo,4,LGLOOK,mactiv,bdlist,dllist,
  518.                 FREE1,am3,doraend))
  519.                 },
  520.                 1,
  521.                 {im(@plane(f,dortbbs,updown,maildel,bmaldel,
  522.                 jisaR,pltmemo,4,LGLOOK,mactiv,bdlist,dllist,
  523.                 FREE1,am3,doraend))
  524.                 });
  525.     dortbbs:=@head(@getline(a,1,1),{\n});
  526.     case(udtp=1,{Yes},{updown:=@head(@getline(a,2,1),{\n})});
  527.     %maildel@head(@getline(a,2+udtp,1),{\n});
  528.     %bmaldel@head(@getline(a,3+udtp,1),{\n});
  529.     %jisaR    @head(@getline(a,4+udtp,1),{\n});
  530.     %pltmemo@head(@getline(a,5+udtp,1),{\n});
  531.     %mpoint    @head(@getline(a,6+udtp,1),{\n});
  532.     LGLOOK:=@head(@getline(a,7+udtp,1),{\n});
  533.     %mactiv    @head(@getline(a,8+udtp,1),{\n});
  534.     %bdlist    @head(@getline(a,9+udtp,1),{\n});
  535.     %dllist    @head(@getline(a,10+udtp,1),{\n});
  536.     FREE1:=    @head(@getline(a,11+udtp,1),{\n});
  537.     am3:=    @head(@getline(a,12+udtp,1),{\n});
  538.     %doraend@head(@getline(a,13+udtp,1),{\n});
  539.     %setup    @head(@getline(a,14+udtp,1),{\n});
  540.     %updnset@head(@getline(a,15+udtp,1),{\n});
  541.     %ok    @head(@getline(a,16+udtp,1),{\n});
  542.         case    (dortbbs,
  543.             { 1},{DORTbbs:={Yes}},
  544.             { 2},{DORTbbs:={BoD}},
  545.             { 3},{DORTbbs:={No}},
  546.             ,{DORTbbs:={Yes}});
  547.         case(updown,
  548.             { 1},{UPDOWN:={first}},
  549.             { 2},{UPDOWN:={last}},
  550.             { 3},{UPDOWN:={No}},
  551.             ,{UPDOWN:={first}});
  552.         case(maildel,
  553.             { 1},{MAILDEL:={Yes};MAILRED:={No};DelML:={all}},
  554.             { 2},{MAILDEL:={Yes};MAILRED:={No};DelML:={other}},
  555.             { 3},{MAILDEL:={No};MAILRED:={Yes};DelML:={}},
  556.             ,{MAILDEL:={No};MAILRED:={No};DelML:={}});
  557.         case(bmaldel,
  558.             { 1},{BMALDEL:={Yes};BMALRED:={No};
  559.                 DelBML:={all};BmalON:={Yes}},
  560.             { 2},{BMALDEL:={Yes};BMALRED:={No};
  561.                 DelBML:={other};BmalON:={Yes}},
  562.             { 3},{BMALDEL:={No};BMALRED:={Yes};
  563.                 DelBML:={};BmalON:={Yes}},
  564.             ,{BMALDEL:={No};BMALRED:={No};
  565.                 DelBML:={};BmalON:={No}});
  566.         case    (jisaR,
  567.             { 1},{JISAR:={Yes}},
  568.             { 2},{JISAR:={No}},
  569.             ,{JISAR:={Yes}});
  570.         case    (pltmemo,
  571.             { 1},{PLTmemo:={Yes}},
  572.             { 2},{PLTmemo:={No}},
  573.             ,{PLTmemo:={Yes}});
  574.         case    (mpoint,
  575.             { 1},{mPOINT:=@im(@getchar(@getday(7),3,8))},
  576.             { 2},{mPOINT:=@im(@getchar(@getday(3),3,8))},
  577.             { 3},{mPOINT:=@im(@getchar(@getday(1),3,8))},
  578.             { 4},{mPOINT:={}});
  579.         case    (am3,
  580.             { 1},{AM3:={Yes}},
  581.             { 2},{AM3:={Detail}},
  582.             { 3},{AM3:={No}},
  583.                 ,{AM3:={No}});
  584.         case    (doraend,
  585.             { 1},{DORAEND:={stopdora}},
  586.             { 2},{DORAEND:={stopmop}},
  587.             { 3},{DORAEND:={continue}},
  588.             { 4},{DORAEND:={poweroff}});
  589.         case    (mactiv,
  590.             { 1},{MACTIV:={Yes}},
  591.             { 2},{MACTIV:={No}},
  592.         ,{MACTIV:={Yes}});
  593.             case    (bdlist,
  594.             { 1},{BDLIST:={Yes}},
  595.             { 2},{BDLIST:={No}},
  596.             ,{BDLIST:={Yes}});
  597.         case    (dllist,
  598.             { 1},{DLLIST:={Yes}},
  599.             { 2},{DLLIST:={new}},
  600.             { 3},{DLLIST:={No}},
  601.             ,{DLLIST:={No}});
  602.         case    (ok,
  603.             { 1},
  604.              {case    (MAILRED={No}&&MAILDEL={No}&&DORTBBS={No}&&
  605.                 UPDOWN={No},
  606.                 {Yes},    {LOGIN1},
  607.                 {No},    {ONLINE1})},
  608.             { 2},{SEMIAUTO},
  609.             { 3},{im({No})},
  610.             ,
  611.             {
  612.             case    (setup,
  613.                 { 1},{setcdir(CDIR);#DORATGK.PLP},
  614.                 { 2},{setcdir(CDIR);#DORASET.PLP},
  615.                 { 3},{selCH});
  616.             case    (updnset,
  617.                 { 1},{setcdir(CDIR);#DORAUSET.PLP},
  618.                 { 2},{setcdir(CDIR);#DORADSET.PLP});
  619.             case    (ok={ 0}&&setup={ 0}&&updnset={ 0},
  620.                 {Yes},{selCH;im({No})},
  621.                 {No},{im({Yes})});
  622.             })})};
  623. /*    メニュ-への(有り・無し)表示    */
  624.     %Arinasi{[arinasi]
  625.         case(arinasi,
  626.             {Yes},{im({有り})},
  627.             {No},{im({無し})},,{im({無オ})}
  628.             );
  629.         };
  630. /*    アクセスするチャンネル変更の処理    */
  631. %selCH{
  632.     %bestCH@case(sROAD,ROAD,{im({1})},ROAD2,{im({2})},ROAD3,{im({3})},
  633.             ROAD4,{im({4})},,{im({1})});
  634.         SNDMSG({erande_f.snd});
  635.     loop    ({
  636.     %a @plane(
  637.     {c これからアクセスする}|NET|{のチャンネルを選択して下さい。\n}|
  638.     {c ☆注意☆アクセス方法の選択が「固定」の場合に有効。☆\n}|
  639.         {c ch.1の電話番号=}|ROAD|{  \n}|
  640.         {c    時間限定 (}|@Arinasi(GEN)|{)  \n}|
  641.         {c ch.2の電話番号=}|ROAD2|{   \n}|
  642.         {c    時間限定 (}|@Arinasi(GEN2)|{)  \n}|
  643.         {c ch.3の電話番号=}|ROAD3|{   \n}|
  644.         {c    時間限定 (}|@Arinasi(GEN3)|{)  \n}|
  645.         {c ch.4の電話番号=}|ROAD4|{   \n}|
  646.         {c    時間限定 (}|@Arinasi(GEN4)|{)  \n}|
  647.         {r チャンネル選択   /ch.1 /ch.2 /ch.3 /ch.4 \n}|
  648.         {s                  / 設定 / 取消 },
  649.             bestCH);
  650.         %bestCH    @head(@getline(a,1,1),{\n});
  651.         %ok    @head(@getline(a,2,1),{\n});
  652.         case(ok,
  653.         { 1},    {
  654.             case    (bestCH,
  655.                 { 1},{sROAD:=@im(ROAD);Am3:=@im(GEN)},
  656.                 { 2},{sROAD:=@im(ROAD2);Am3:=@im(GEN2)},
  657.                 { 3},{sROAD:=@im(ROAD3);Am3:=@im(GEN3)},
  658.                 { 4},{sROAD:=@im(ROAD4);Am3:=@im(GEN4)},
  659.                 ,{sROAD:=@im(ROAD)Am3:=@im(GEN)});
  660.             display(sROAD|{へのアクセスに変更しました。\n});
  661.             genteiT:=Am3;
  662.         case    (@getchar(sROAD,1,1)={/},
  663.             {Yes},{im({Yes})},
  664.             {No},{im({No})})
  665.             },
  666.         { 2},{},
  667.         ,{im({No})});
  668.         });
  669.     };
  670. %SEMIAUTO{
  671.     var iniMENW[3];iniMENW:={};
  672.     %loginHLP{
  673.     ID入力から「特殊な使い方」と言うのは、回線状態の影響により
  674.  
  675.     ログイン後にネットから「NO CARRIER」が送られる不運な方が、
  676.  
  677.     DORAを再起動して『ID入力から』の手順で
  678.  
  679.     DORAを利用できる機能です。};
  680.     case    (ID={}||ID={GUEST},{Yes},{PLTmemo:={No}});
  681.     loop    ({
  682.     case    (@linechck,
  683.         {Yes},{
  684.         loop({
  685.             SNDMSG({erande_f.snd});
  686.             select    ({処理を選んでください},
  687.                 Wtime4,
  688.                 {
  689.                 chat({Yes});
  690.                 loop    ({
  691.                     footnote({再開},{b});
  692.                     waitx({});
  693.                     case    (@xtype,
  694.                         101,    {im({No})},
  695.                         201,    {im({No})});
  696.                     });
  697.                 footnote({});
  698.                 chat({No});
  699.                 im({Yes});
  700.                 },
  701.                 {  ログイン},
  702.                 {setcdir(CDIR);#DORALGIN.PLP;im({Yes})},
  703.                 {  アップ・ダウン ロード},
  704.                 {type({\n});preRetM;WaitMKD;CHeck:={No};
  705.                 DOWNSTART;UPDOWN1;DOWNSTOP;im({Yes})
  706.                 },
  707.                 {  ボード&ファイルボード巡回},
  708.                 {
  709.                 type({\n});preRetM;DORTBBS:={Yes};
  710.                 setcdir(CDIR);#DORALOOP.PLP;im({Yes});
  711.                 },
  712.                 {  ボード巡  回   },
  713.                 {
  714.                 type({\n});preRetM;DORTBBS:={BoD};
  715.                 setcdir(CDIR);#DORALOOP.PLP;im({Yes});
  716.                 },
  717.                 {  自由行動    },
  718.                 {type({\n});preRetM;setcdir(CDIR);
  719.                 #DORACHAT.PLP;im({Yes})},
  720.                 {  手動   },
  721.                 {
  722.                 chat({Yes});
  723.                 loop    ({
  724.                     footnote({再開},{b});
  725.                     waitx({});
  726.                     case    (@xtype,
  727.                         101,    {im({No})},
  728.                         201,    {im({No})});
  729.                     });
  730.                 footnote({});
  731.                 chat({No});
  732.                 im({Yes});
  733.                 },
  734.                 {ID入力から「特殊な使い方」},
  735.                 {
  736.                 SNDMSG({erande_f.snd});
  737.                 select    ({ID入力からのログインを実行します},
  738.                     Wtime4,,
  739.                     {  す  る  },
  740.                     {loginMODE:={lessTEL};RETCD:={Start};
  741.                     setcdir(CDIR);#DORALGIN.PLP},
  742.                     {HELP},{HLPview(loginHLP);im({Yes})},
  743.                     {  しない  },
  744.                     );
  745.                 im({Yes})},
  746.                 {  ログアウト},
  747.                 {type({\n});preRetM;LogOff;DOWNSTOP;im({No})},
  748.                 {DORA初期メニューへ},
  749.                 {iniMENW:={end};DOWNSTOP;im({No})}
  750.                 );
  751.             });
  752.         },
  753.         {No},{
  754.         loop({
  755.             SNDMSG({erande_f.snd});
  756.             select    ({処理を選んでください},
  757.                 Wtime4,
  758.                 {im({Yes})},
  759.                 {  ログイン},
  760.                 {setcdir(CDIR);#DORALGIN.PLP;im({No})},
  761.                 {DORA初期メニューへ},
  762.                 {iniMENW:={end};DOWNSTOP;im({No})}
  763.                 );
  764.             });
  765.         });
  766.         case    (iniMENW,{end},{im({No})},,{im({Yes})});
  767.         });
  768.     };
  769.  
  770. /*    ログインのみの処理    */
  771. %LOGIN1    {setcdir(CDIR);#DORALGIN.PLP;
  772.     case(RETCD,{Start},
  773.     {setcdir(CDIR);#DORACHAT.PLP;DOWNSTOP;LogOff;AUTOEND},,{im({Yes})})
  774.     };
  775. /*    アップ/ダウンロード処理    */
  776. %UPDOWN1{case(@filechk(UP2|{doraup.ctl}),
  777.         {Yes},{setcdir(CDIR);#DORAUPLD.PLP});
  778.     case(@filechk(UP2|{doradown.ctl})={Yes}||BmalON={Yes},
  779.         {Yes},{setcdir(CDIR);#DORADNLD.PLP})};
  780. /*    オンライン処理    */
  781. %ONLINE1{
  782.     setcdir(CDIR);#DORALGIN.PLP;
  783.     case    (ID={}||ID={GUEST},{Yes},{PLTmemo:={No}});
  784.     case(RETCD,{Start},
  785.         {case(PLTmemo={Yes},{Yes},{PLTMEMO});
  786.         case(UPDOWN,{first},{UPDOWN1});
  787.         setcdir(CDIR);#DORALOOP.PLP;
  788.         case(UPDOWN,{last},{UPDOWN1});
  789.         case(PLTmemo={Yes} && afMEMO<>{},{Yes},{PLTMend});
  790.         case    (FREE1={ 1},
  791.             {Yes},
  792.             {setcdir(CDIR);#DORACHAT.PLP;SEMIAUTO},
  793.             {No},
  794.             {
  795.             preRetM;LogOff;wait(1);
  796.             case    (DORAEND,
  797.                 {stopdora},{PLTSTOP},
  798.                 {stopmop},{stopterm},
  799.                 {poweroff},{command({poff});im({No})},
  800.                 {continue},{im({No})},
  801.                 ,{im({Yes})
  802.                 });
  803.             });
  804.         });
  805.     };
  806. var DAY1[24];var DAY2[10];/* ログファイルの日付*/
  807. var    Am3    [3];    /* チャンネル選択フラグ*/
  808. var    LOGFILE    [12];    /* ログファイル名 */
  809. var    TELNO    [20];    /* 接続電話番号    */
  810. var    RETCD    [6];    /* DORALGINのリターンコード    */
  811. var    upldcntl[64];    /* アップロード制御ファイル名    */
  812. var    dnldcntl[64];    /* ダウンロード制御ファイル名    */
  813. var    CHeck     [3];    /* ログダウンチェックフラグ    */
  814.  
  815. /*    初期設定処理    */
  816. case    (FlyLine,
  817.     { 1},{flyline({1})},{ 2},{flyline({2})},{ 3},{flyline({3})},
  818.     { 4},{flyline({4})},,{flyline({3})});
  819.     xon({No});
  820.     stopbit({1});
  821.     parity({None});
  822.     lineend({CR});
  823.     lineendt({CR});
  824.     flyingx({No});
  825.     dataleng({8bit});
  826.     rscs({Yes});
  827.     code({sjis});
  828.     logprint({No});
  829.     sendtype({Line});
  830.     ctrl({No});
  831.     esc({Yes});
  832.     dispecho({Yes});
  833.     code    ({sjis});
  834.     OpenPort;
  835.     crmode({Yes});
  836. /*プロトコル設定*/
  837. case    (@tail(@version,{for },{ })={Win31},
  838.     {Yes},
  839.     {case    (BINty,
  840.         {X-modem},{setbin({X-modem});binop:={S}},
  841.         {X-modem-CRC},{setbin({X-modem-CRC});binop:={C}},
  842.         {X-modem-1K-CRC},{setbin({X-modem-1K-CRC});binop:={X}},
  843.         {Y-modem},{setbin({Y-modem});binop:={Y}},
  844.         {Y-modem-G},{setbin({Y-modem-G});binop:={G}},
  845.         {MLINK},{setbin({MLINK});binop:={M}},
  846.         {Z-modem},{RecDir(FSW);/*受信ディレクトリーの指定*/
  847.         /*SetZAuto({No});   Z-modem受信の自動起動無の指定*/
  848.         setbin({Z-modem});binop:={Z}},
  849.         ,{setbin({Y-modem});BINty:={Y-modem};binop:={Y}}
  850.         );binop:=binop
  851.     },
  852.     {No},
  853.     {case    (TBINty,
  854.         {X-modem},{binop:={S}},
  855.         {Y-modem},{binop:={Y}},
  856.         ,{binop:={Y}}
  857.         );binop:=binop
  858.     });
  859. case    (@diskrem >500*1018,
  860.     {Yes},{ONLINE},
  861.     {No},
  862.     {display({ログの格納用ディレクトリの空きエリアが不足しています\n});
  863.     display({空きエリアは500KB以下です注意してください。\n});
  864.     footnote({空きエリアは500KB以下です注意してください。\n});
  865.     wait(5);ONLINE
  866.     });